package model;

import java.util.Date;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToOne;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

@Entity
public class Escola {

	@Id
	private long codigo;
	private String nome;
	private String rede;
	private boolean alimentacao;
	private String latitude;
	private String longitude;
	private String endereco;
	private String bairro;
	private double numero;
	@Temporal(TemporalType.DATE)
	private Date dtAnoLetivoInicio;
	@Temporal(TemporalType.DATE)
	private Date dtAnoLetivoTermino;
	@Column(nullable = true)
	private int DDD;
	@Column(nullable = true)
	private int telefone;
	@Column(nullable = true)
	private String email;

	@OneToOne(cascade = CascadeType.ALL)
	@JoinColumn(name = "estruturaApoioDeficienteID")
	private EstruturaApoioDeficiente eAD;
	
	@OneToOne(cascade = CascadeType.ALL)
	@JoinColumn(name = "estruturaFisicaID")
	private EstruturaFisica eF;
	@OneToOne(cascade = CascadeType.ALL)
	@JoinColumn(name = "recursoID")
	private Recurso recurso;
	@OneToOne(cascade = CascadeType.ALL)
	@JoinColumn(name = "municipioID")
	private Municipio m;

	// Construtores
	public Escola() {

	}

	public Escola(long codigo,String escola, String rede, boolean alimentacao,
			String latitude, String longitude, String endereco, String bairro,
			double numero, Date dtAnoLetivoInicio,Date dtAnoLetivoTermino,
			int dDD, int telefone, String email, EstruturaApoioDeficiente eAD,
			EstruturaFisica eF, Recurso recurso, Municipio m) {
		super();
		this.codigo = codigo;
		this.nome = escola;
		this.rede = rede;
		this.alimentacao = alimentacao;
		this.latitude = latitude;
		this.longitude = longitude;
		this.endereco = endereco;
		this.bairro = bairro;
		this.numero = numero;
		this.dtAnoLetivoInicio = dtAnoLetivoInicio;
		this.dtAnoLetivoTermino = dtAnoLetivoTermino;
		DDD = dDD;
		this.telefone = telefone;
		this.email = email;
		this.eAD = eAD;
		this.eF = eF;
		this.recurso = recurso;
		this.m = m;
	}

	// Getts e Setts

	public String getRede() {
		return rede;
	}

	public void setRede(String rede) {
		this.rede = rede;
	}

	public boolean isAlimentacao() {
		return alimentacao;
	}

	public void setAlimentacao(boolean alimentacao) {
		this.alimentacao = alimentacao;
	}

	public String getLatitude() {
		return latitude;
	}

	public void setLatitude(String latitude) {
		this.latitude = latitude;
	}

	public String getLongitude() {
		return longitude;
	}

	public void setLongitude(String longitude) {
		this.longitude = longitude;
	}

	public Date getDtAnoLetivoInicio() {
		return dtAnoLetivoInicio;
	}

	public void setDtAnoLetivoInicio(Date dtAnoLetivoInicio) {
		this.dtAnoLetivoInicio = dtAnoLetivoInicio;
	}

	public Date getDtAnoLetivoTermino() {
		return dtAnoLetivoTermino;
	}

	public void setDtAnoLetivoTermino(Date dtAnoLetivoTermino) {
		this.dtAnoLetivoTermino = dtAnoLetivoTermino;
	}

	public int getDDD() {
		return DDD;
	}

	public void setDDD(int dDD) {
		DDD = dDD;
	}

	public int getTelefone() {
		return telefone;
	}

	public void setTelefone(int telefone) {
		this.telefone = telefone;
	}

	public String getEmail() {
		return email;
	}

	public void setEmail(String email) {
		this.email = email;
	}

	public EstruturaApoioDeficiente geteAD() {
		return eAD;
	}

	public void seteAD(EstruturaApoioDeficiente eAD) {
		this.eAD = eAD;
	}

	public EstruturaFisica geteF() {
		return eF;
	}

	public void seteF(EstruturaFisica eF) {
		this.eF = eF;
	}

	public Recurso getRecurso() {
		return recurso;
	}

	public void setRecurso(Recurso recurso) {
		this.recurso = recurso;
	}

	public long getCodigo() {
		return codigo;
	}

	public void setCodigo(long codigo) {
		this.codigo = codigo;
	}

	public String getEndereco() {
		return endereco;
	}

	public void setEndereco(String endereco) {
		this.endereco = endereco;
	}

	public String getBairro() {
		return bairro;
	}

	public void setBairro(String bairro) {
		this.bairro = bairro;
	}

	public double getNumero() {
		return numero;
	}

	public void setNumero(double numero) {
		this.numero = numero;
	}

	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public Municipio getM() {
		return m;
	}

	public void setM(Municipio m) {
		this.m = m;
	}

	
}
